/**
 * table 列宽拖拽
 * @param $
 * @param window
 * @param undefined
 */
(function ($, window, undefined) {
	
	if (!$ || !window) {
		return;
	}
	
	window.isDragEvent = false;
	
	//datatable 列进行拖拽
	var dropDataTable = function (options) {
		if (!options.nScrollHead && !options.nScrollBody) {
			return;
		}
		//用来存储当前更改宽度的Table Cell,避免快速移动鼠标的问题
		var tTD;
		// 获取需要修改列宽的表格
		var table = $(options.nScrollBody).find("table")[0];
		// 获取表格头部th
		var tableHead = $(options.nScrollHead).find("table")[0];
		// 获取表格头部th
		var headTh = tableHead.rows[0];
		for (j = 0; j < headTh.cells.length; j++) {
			headTh.cells[j].onmousedown = function () {
				//记录单元格
				tTD = this;
				if (event.offsetX > tTD.offsetWidth - 10) {
					tTD.mouseDown = true;
					tTD.oldX = event.x;
					tTD.oldWidth = tTD.offsetWidth;
					window.isDragEvent = true;
					sys.stopPropagation();
				}
			};
			headTh.cells[j].onmouseup = function () {
				//结束宽度调整
				if (tTD == undefined) tTD = this;
				tTD.mouseDown = false;
				tTD.style.cursor = 'default';
				window.isDragEvent = false;
				sys.stopPropagation();
			};
			headTh.cells[j].onmousemove = function () {
				//更改鼠标样式
				if (event.offsetX > this.offsetWidth - 10)
					this.style.cursor = 'col-resize';
				else
					this.style.cursor = 'default';
				
				//取出暂存的Table Cell
				if (tTD == undefined) tTD = this;
				//调整宽度
				if (tTD.mouseDown != null && tTD.mouseDown == true) {
					tTD.style.cursor = 'default';
					if (tTD.oldWidth + (event.x - tTD.oldX) > 0)
						tTD.width = tTD.oldWidth + (event.x - tTD.oldX);
					//调整列宽
					tTD.style.width = tTD.width + 'px';
					tTD.style["min-width"] = tTD.width + 'px';
					tTD.style.cursor = 'col-resize';
					// 调整滚动表格的每个cell
					for (k = 0; k < table.rows.length; k++) {
						table.rows[k].cells[tTD.cellIndex].style.width = tTD.style.width;
						table.rows[k].cells[tTD.cellIndex].style["min-width"] = tTD.style.width;
					}
				}
				//tTD.mouseDown = false;
				sys.stopPropagation();
			};
		}
	}
	
	//一般table拖拽,请在table元素加上  class="dtable"
	var dropTable = function (options) {
		var defautlOptions = {
			_class: "dtable"
		};
		options = $.extend({}, defautlOptions, options);
		var _class = options._class;
		var tTD;
		// 获取需要修改列宽的表格
		$("." + _class).each(function (index, ele) {
			if ($(this).is(".dataTable")) {//只针对一般table
				return true;
			}
			var table = $(this)[0];
			var headTh = table.rows[0];
			if (!headTh || !headTh.cells) {
				return true;
			}
			for (j = 0; j < headTh.cells.length; j++) {
				headTh.cells[j].onmousedown = function () {
					//记录单元格
					tTD = this;
					if (event.offsetX > tTD.offsetWidth - 10) {
						tTD.mouseDown = true;
						tTD.oldX = event.x;
						tTD.oldWidth = tTD.offsetWidth;
					}
				};
				headTh.cells[j].onmouseup = function () {
					//结束宽度调整
					if (tTD == undefined) tTD = this;
					tTD.mouseDown = false;
					tTD.style.cursor = 'default';
				};
				headTh.cells[j].onmousemove = function () {
					//更改鼠标样式
					if (event.offsetX > this.offsetWidth - 10)
						this.style.cursor = 'col-resize';
					else
						this.style.cursor = 'default';
					
					//取出暂存的Table Cell
					if (tTD == undefined) tTD = this;
					//调整宽度
					if (tTD.mouseDown != null && tTD.mouseDown == true) {
						tTD.style.cursor = 'default';
						if (tTD.oldWidth + (event.x - tTD.oldX) > 0)
							tTD.width = tTD.oldWidth + (event.x - tTD.oldX);
						//调整列宽
						tTD.style.width = tTD.width + 'px';
						tTD.style["min-width"] = tTD.width + 'px';
						tTD.style.cursor = 'col-resize';
						// 调整滚动表格的每个cell
						for (k = 0; k < table.rows.length; k++) {
							table.rows[k].cells[tTD.cellIndex].style.width = tTD.style.width;
							table.rows[k].cells[tTD.cellIndex].style["min-width"] = tTD.style.width;
						}
					}
					sys.stopPropagation();
				};
			}
		})
	}
	
	var getEvent = function () {
		return window.isDragEvent;
	}
	
	var changeTableColumnWidth = function (table, index) {
	
	}
	
	var tableUtils = {
		dropDataTable: dropDataTable,
		dropTable: dropTable,
		getEvent: getEvent
	}
	window.tableUtils = tableUtils;
	
})(jQuery, window);
